//
// Created on 2024/9/23.
//
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
// please include "napi/native_api.h".

#pragma once

#include "api/peer_connection_interface.h"
#include "api/media_stream_interface.h"

namespace ohosrtc {

using SDP = webrtc::SessionDescriptionInterface;
using RTCError = webrtc::RTCError;
using IceCandidate = webrtc::IceCandidateInterface;
using MediaStreamPtr = webrtc::scoped_refptr<webrtc::MediaStreamInterface>;
using DataChannelPtr = rtc::scoped_refptr<webrtc::DataChannelInterface>;
using IceGatheringState = webrtc::PeerConnectionInterface::IceGatheringState;
using IceConnectionState = webrtc::PeerConnectionInterface::IceConnectionState;
using SignalingState = webrtc::PeerConnectionInterface::SignalingState;
using OnSuccessCall = std::function<void()>;
using OnSetSessionDescriptionFailure = std::function<void(const std::string &)>;
using RTCConfigType = webrtc::PeerConnectionInterface::RTCConfigurationType;
using RTCConfig = webrtc::PeerConnectionInterface::RTCConfiguration;

struct RoomConnectionParameters {
  std::string room_url;
  std::string room_id;
  bool loop_back = false;
};

struct PeerConnectionChannelConfiguration final : public RTCConfig {
public:
    PeerConnectionChannelConfiguration() {
    }
    
    explicit PeerConnectionChannelConfiguration(RTCConfigType type) {
    }
};

} // namespace ohosrtc